package com.zfast.yugioh.junit;

import com.zfast.yugioh.util.ZStrUtil;
import org.junit.jupiter.api.Test;

/**
 * @author zgn
 * @Description: simJunit
 * @date 2022/1/13 0013
 */
public class ZStrUtilJunit {
    @Test
    public void egMax() {//e.g.
        //region 1.模拟数据
        System.out.println("--------------------Start--------------------");
        //endregion

        //region 2.数据处理
        System.out.println("--------------------Deal--------------------");
        //endregion

        //region 3.数据展示
        System.out.println("--------------------Done--------------------");
        //endregion
    }
    String str="那么为什么t可以一下向右移动3个呢，中间的两次为什么就不比较了呢？\n" +
            "这就是kmp算法的精华了吧，因为在算next数组的时候已经算过了，c前面只有长度为1的最长公共前后缀。也就是说长度为2的后缀ca和前缀ab是不相等的，长度为3的后缀bca和前缀abc是不想等的。而这两个后缀又分别和s中对应位置的字符串是相等的，那就可以推出来长度为2、3的前缀abc和s中的bca不相等，ab和s中的ca不相等，那就没有必要进行比较了。\n" +
            "所以可以跳过中间右移1，右移2这两次比较。直接从右移3开始比较，并且由于第一个字符已经知道相等了，也不用比较了。\n" +
            "————————————————\n" +
            "版权声明：本文为CSDN博主「weixin_41777654」的原创文章，遵循CC 4.0 BY-SA版权协议，转载请附上原文出处链接及本声明。\n" +
            "原文链接：https://blog.csdn.net/weixin_41777654/article/details/124775630";
    String specialChar="GG";
    //不符合情况的力扣算法
    /*public static int BF(char S[], char T[]) {
        int i = 0, j = 0;
        while (S[i] != '\0' && T[j] != '\0') {
            if (S[i] == T[j]) {
                i++;
                j++;
            } else {
                i = i - j + 1;
                j = 0;
            }
        }
        if (T[j] == '\0') return (i - j);     //主串中存在该模式返回下标号
        else return -1;     //主串中不存在该模式
    }
    @Test
    public void 力扣算法_获取第一个目标串位置_egMin() {//e.g.
        long start,end;
        start = System.currentTimeMillis();

        System.out.println(ZStrUtil.BF(str.toCharArray(),specialChar.toCharArray()));

        end = System.currentTimeMillis();
        System.out.println("耗费时间：" + (end-start));

    }*/

    @Test
    public void java原生_获取第一个目标串位置_egMin() {//e.g.
        long start,end;
        start = System.currentTimeMillis();

        System.out.println(ZStrUtil.startChar(str,specialChar));

        end = System.currentTimeMillis();
        System.out.println("耗费时间：" + (end-start));
    }
    @Test
    public void egMin() {//e.g.
        System.out.println();
    }
}
